Cross Development Environment
커널이 올라가기 전에 target 시스템에는 어떤 프로그램도 올라가 있지 않는다.
일반적으로 메모리 용량이 적어서 컴파일러를 포함한 프로그램 개발 환경을 올리기도 어렵다.
따라서 임베디드 시스템 개발을 할 때는 교차 개발 환경을 이용한다.
Cross Development Environment
target 시스템 용 프로그램을 별도의 host 시스템에서 개발하는 환경
host와 target은 사용되는 프로세서가 다른 경우,
컴파일러 실행은 host에서 되지만, 실행 코드는 target system에서 실행된다.
Cross Compiler
intel-FPGA monitor program과 같이 target system용 실행 파일을 생성하는 컴파일러
JTAG cable: 플레시 메모리 저장용
Serial cable: 터미널용
Ethernet cable: 네트워크용(tftp, NFS)
host에서 부트로더와 운영체제, 프로그램을 개발해주어야 한다.
이후 여러 케이블을 통해 개발한 SW을 target system으로 옮겨주고, 실행한다.
Bootloader
부트로더는 설치되는 디바이스에 따라서 설치 방법이 다양하다.
보통은 플래시 메모리를 사용한다.
ex) SD카드에 리눅스 이미지를 저장하고 보드에 장착하여 로드
JTAG
PCB와 IC를 테스트 하기 위한 목적으로 제정된 표준
Boundary Scan Test를 이용하여 외부의 핀을 조사하거나 제어할 수 있다.
전체적인 인터페이스는 5개의 핀에 의해 제어된다.
(TDI, TMS, TCK, nTRST, TDO)
JTAG 기능
1. 프로세서의 상태와는 상관없이 디바이스의 모든 외부 핀을 구동시키거나 값을 읽어들일 수 있는 기능을 제공
2. 회로의 배선과 소자의 전기적 연결 상태를 테스트
3. 디바이스 간 연결상태를 테스트
4. Flash Memroy Programming(fusing)
JTAG-Boundary Scan Test Interface
JTAG은 칩 내부에 Boundary Cell을 이용해서 외부의 핀과 일대일로 연결시켜 프로세서가 할 수 있는 동작을
중간 Cell을 통해 모든 동작을 인위적으로 수행
(여러가지 하드웨어 테스트나 연결 상태 등을 체크)
JTAG를 이용한 Flash Memroy Fusing
JTAG compiant device를 통하여 Flash memory의 fusing을 수행
부트로더 프로그램을 최초로 플래시 메모리에 저장할 때 사용하며, 그 이후에는 부트로더 명령어를 사용하여
플래시 메모리의 내용을 변경한다.